package com.danton.auth.service;

import java.util.List;

import com.danton.common.exception.UserAlreadyExistException;
import com.danton.model.BsAdminModel;
import com.danton.model.BsPermissionModel;
import com.danton.model.BsRoleModel;
import com.jfinal.aop.Before;
import com.jfinal.plugin.activerecord.tx.Tx;

public interface UserService {
	
	/**
	 * 通过用户名查询用户
	 * @param user_name
	 * @param password
	 * @return
	 */
	public BsAdminModel findByUserName(String user_name);
	
	/**
	 * 通过用户名密码查询用户
	 * @param user_name
	 * @param password
	 * @return
	 */
	public BsAdminModel findByUserNameAndPassword(String user_name, String password);

	/**
	 * 通过用户ID查询角色列表
	 * @param user_id
	 * @return
	 */
	public List<BsRoleModel> findRolesByUserID(int user_id);
	
	/**
	 * 通过用户user_name查询角色列表
	 * @param user_id
	 * @return
	 */
	public List<BsRoleModel> findRolesByUserName(String user_name);

	/**
	 * 通过用户ID查询权限列表
	 * @param user_id
	 * @return
	 */
	public List<BsPermissionModel> findPermissionsByUserID(int user_id);

	/**
	 * 注册用户
	 * @param user_name
	 * @param password
	 * @throws UserAlreadyExistException 用户已经存在
	 */
	@Before(Tx.class)
	public void register(BsAdminModel adminModel, String role_code, String access_key_id) throws UserAlreadyExistException;
	
	public boolean checkLoginPermission(String user_name,String access_key_id);
}
